This is Kara’s first pass at looking at the Sleep data (with data from 2019-01-24).

Demographics

A couple of things to note here: A substantial majority of participants in Ghana were female, and this also appears to be true in Thailand and Vanuatu (where an unusual number of participants are missing gender/sex info).

Individual questions

1. Where do you usually sleep at night? (slep_ordn01)

2. What do you usually sleep on at night? (slep_ordn02)

3. Does anyone else sleep in the same bed (or mat, hammock, etc.) with you? (slep_ordn03)

4. If yes, who sleeps with you in the bed? Please circle the person(s) from the list (slep_ordn04)

5. Besides anyone who shares the bed with you, does someone else sleep in the same room with you? (slep_ordn05)

6. If yes, who else sleeps in the same room with you? Please circle the person(s) from the list (slep_ordn06)

7. What does your family use to see at night? (slep_ordn07)

8. Do you usually take naps? (slep_ordn08)

9. If so, how often do you rest or nap? (slep_ordn09)

10. When do you typically fall asleep every night and wake up every night? (slep_ordn10)

11. Does that vary a lot from night to night? (slep_ordn11)

12a. RA judgment for hours slept (slep_ordn12a, derived from slep_ordn12)

13. What do you think is the most important role of sleep for you? (slep_ordn13)

LS0tCnRpdGxlOiAiU2xlZXAgKEtXIGZpcnN0IHBhc3MpIgpzdWJ0aXRsZTogIkxhc3QgdXBkYXRlZDogMjAxOS0wMS0yNSIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0b2M6IHllcwogICAgdG9jX2RlcHRoOiA0CiAgICB0b2NfZmxvYXQ6IHllcwphbHdheXNfYWxsb3dfaHRtbDogeWVzCi0tLQoKVGhpcyBpcyBLYXJhJ3MgZmlyc3QgcGFzcyBhdCBsb29raW5nIGF0IHRoZSBTbGVlcCBkYXRhICh3aXRoIGRhdGEgZnJvbSAyMDE5LTAxLTI0KS4KCmBgYHtyIGdsb2JhbF9vcHRpb25zLCBpbmNsdWRlID0gRn0Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGZpZy53aWR0aCA9IDQsIGZpZy5hc3AgPSAwLjY3LAogICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZSA9IEYsIGVjaG8gPSBGKQpgYGAKCmBgYHtyfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShsYW5nY29nKQpsaWJyYXJ5KHBzeWNoKQpsaWJyYXJ5KHJlYWR4bCkKbGlicmFyeShjb3dwbG90KQpsaWJyYXJ5KGxtZTQpCmxpYnJhcnkobG1lclRlc3QpCmxpYnJhcnkoa2FibGVFeHRyYSkKbGlicmFyeShsdWJyaWRhdGUpCgp0aGVtZV9zZXQodGhlbWVfYncoKSkKYGBgCgpgYGB7cn0KZF9yYXcgPC0gcmVhZF9jc3YoIi4uL0NPTVBMRVRFX3VzZSBmb3IgYW5hbHlzaXNfU2xlZXBfSmFuLjI0LjIwMTkuY3N2IikKYGBgCgpgYGB7cn0KZDAgPC0gZF9yYXcgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc2xlcF9vcmRuMTEsIHNsZXBfb3JkbjEyYSwgc2xlcF9vcmRuMTlhLCBzbGVwX2VkZ2VfdG90YWwsIAogICAgICAgICAgICAgICAgIHNsZXBfZGVtb19hZ2UsIHNsZXBfZGVtb19zZXMsIHNsZXBfZGVtb19ob3dyKSwgCiAgICAgICAgICAgIGZ1bnMoYXMubnVtZXJpYykpICU+JQogIG11dGF0ZV9hdCh2YXJzKHNsZXBfb3JkbjAzLCBzbGVwX29yZG4wNSwgc2xlcF9vcmRuMDgsIHNsZXBfb3JkbjE2KSwKICAgICAgICAgICAgZnVucyhyZWNvZGVfZmFjdG9yKC4sICIwIiA9ICJubyIsICIxIiA9ICJ5ZXMiKSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHNsZXBfb3JkbjA0LCBzbGVwX29yZG4wNiksCiAgICAgICAgICAgIGZ1bnMocmVjb2RlX2ZhY3RvciguLCAiMCIgPSAibm9ib2R5IiwgIjEiID0gInNwb3VzZSIsICIyIiA9ICJzaXN0ZXIiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzIiA9ICJicm90aGVyIiwgIjQiID0gImRhdWdodGVyIiwgIjUiID0gInNvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNiIgPSAibW90aGVyIiwgIjciID0gImZhdGhlciIsICI4IiA9ICJncmFuZHBhcmVudCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjkiID0gImdyYW5kY2hpbGQiLCAiMTAiID0gIm90aGVyIHJlbGF0aXZlIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMTEiID0gIm5vbi1yZWxhdGl2ZSIpKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc2xlcF9vcmRuMTFfd29ybGRvZnNwaXJpdHMsIHNsZXBfb3JkbjEzX2RlZXBzZWxmLAogICAgICAgICAgICAgICAgIHNsZXBfb3JkbjEzX21pbmRvZmYsIHNsZXBfb3JkbjEzX3JlcGxlbmlzaCwKICAgICAgICAgICAgICAgICBzbGVwX29yZG4yM19QaHlzaW9sb2dpY2FsLCBzbGVwX29yZG4yM19Qc3ljaG9sb2dpY2FsLAogICAgICAgICAgICAgICAgIHNsZXBfb3JkbjIzX0RyZWFtcywgc2xlcF9vcmRuMjNfU291bmQsCiAgICAgICAgICAgICAgICAgc2xlcF9vcmRuMjNfc3VwZXJuYXR1cmFscHJheWVyKSwKICAgICAgICAgICAgZnVucyhmYWN0b3IoLiwKICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiXFwuIiwgIjEiKSwKICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygibm8iLCAieWVzIikpKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc2xlcF9vcmRuMTUsIHNsZXBfb3JkbjE3LCBzbGVwX29yZG4xOCwgc2xlcF9vcmRuMjA6c2xlcF9vcmRuMjIpLAogICAgICAgICAgICBmdW5zKHJlY29kZV9mYWN0b3IoLiwgIjAiID0gIm5ldmVyIiwgIjEiID0gInJhcmVseSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjIiID0gInNvbWV0aW1lcyIsICIzIiA9ICJvZnRlbiIpKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc3RhcnRzX3dpdGgoInNsZXBfZWRnZSIpKSwKICAgICAgICAgICAgZnVucyhyZWNvZGVfZmFjdG9yKC4sICIwIiA9ICJuZXZlciIsICIxIiA9ICJyYXJlbHkiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyIiA9ICJvY2Nhc2lvbmFsbHkiLCAiMyIgPSAiZnJlcXVlbnRseSIpKSkgJT4lCiAgbXV0YXRlKHNsZXBfb3JkbjAxID0gcmVjb2RlX2ZhY3RvcihzbGVwX29yZG4wMSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIgPSAib3duIGJlZHJvb20iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIyIiA9ICJiZWRyb29tIHNoYXJlZCB3aXRoIG90aGVycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMyIgPSAiY29tbW9uIHJvb20gKGxpdmluZyBwbHVzIHNsZWVwaW5nKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNCIgPSAicG9yY2gvb3V0c2lkZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNSIgPSAibm90IGluIGhvbWUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjYiID0gInZhcmlhYmxlIiksCiAgICAgICAgIHNsZXBfb3JkbjAyID0gcmVjb2RlX2ZhY3RvcihzbGVwX29yZG4wMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIxIiA9ICJiZWQiLCAiMiIgPSAic29mYSwgZGl2YW4iLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIzIiA9ICJtYXQsIGdyb3VuZCIsICI0IiA9ICJoYW1tb2NrIiksCiAgICAgICAgIHNsZXBfb3JkbjA3ID0gcmVjb2RlX2ZhY3RvcihzbGVwX29yZG4wNywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIiA9ICJub3RoaW5nLCBqdXN0IHRoZSBtb29uIGFuZCBzdGFycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMSIgPSAibGlnaHQgZnJvbSB0aGUgY29va2luZyBmaXJlIG9yIGhlYXJ0aCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMiIgPSAiY2FuZGxlcyBvciBzdHJhdyB0b3JjaGVzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMyIgPSAib2lsIG9yIGtlcm9zZW5lIGxhbXAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjQiID0gImJhdHRlcnktZHJpdmVuIGxhbXAgb3IgZmxhc2hsaWdodCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjUiID0gImVsZWN0cmljIGxpZ2h0IiksCiAgICAgICAgIHNsZXBfb3JkbjA5ID0gcmVjb2RlX2ZhY3RvcihzbGVwX29yZG4wOSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIwIiA9ICJOQSAobmV2ZXIpIiwgIjEiID0gInJhcmVseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMiIgPSAic29tZXRpbWVzICgxLTIgdGltZXMgYSB3ZWVrKSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjMiID0gInVzdWFsbHkgYnV0IG5vdCBldmVyeWRheSAoMy02IHRpbWVzIGEgd2VlaykiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI0IiA9ICJldmVyeSBkYXkiKSwKICAgICAgICAgc2xlcF9vcmRuMTQgPSByZWNvZGVfZmFjdG9yKHNsZXBfb3JkbjE0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjAiID0gIm5vIiwgIjEiID0gImEgbGl0dGxlIiwgIjIiID0gImEgbG90IiksCiAgICAgICAgIHNsZXBfY3RyeSA9IHJlY29kZV9mYWN0b3Ioc2xlcF9jdHJ5LCAiMSIgPSAiVVMiLCAiMyIgPSAiR2hhbmEiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiMiIgPSAiVGhhaWxhbmQiLCAiNCIgPSAiQ2hpbmEiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNSIgPSAiVmFudWF0dSIpLAogICAgICAgICBzbGVwX2RlbW9fc2V4ID0gcmVjb2RlX2ZhY3RvcihzbGVwX2RlbW9fc2V4LCAiMSIgPSAibSIsICIyIiA9ICJmIiksCiAgICAgICAgIHNsZXBfZGVtb191YnJ1ID0gcmVjb2RlX2ZhY3RvcihzbGVwX2RlbW9fdWJydSwgIjEiID0gInVyYmFuIiwgIjIiID0gInJ1cmFsIiksCiAgICAgICAgIHNsZXBfZGVtb19hZmZyID0gcmVjb2RlX2ZhY3RvcihzbGVwX2RlbW9fYWZmciwgIjEiID0gIm5vIiwgIjAiID0gInllcyIpLAogICAgICAgICBzbGVwX2RlbW9fdHVuZyA9IHJlY29kZV9mYWN0b3Ioc2xlcF9kZW1vX3R1bmcsICIwIiA9ICJubyIsICIxIiA9ICJ5ZXMiKSkgJT4lCiAgc2VsZWN0KC1jKHNsZXBfZW50cjpzbGVwX2JhdGMsIHNsZXBfZmlsZTpzbGVwX3dob2MpKSAlPiUKICBkaXN0aW5jdCgpCmBgYAoKYGBge3J9CiMgZGVhbCB3aXRoIHNsZWVwaW5nICYgd2FraW5nIHRpbWVzCiMgbm90IHF1aXRlIHBlcmZlY3QhIQpkMSA8LSBkMCAlPiUKICBtdXRhdGVfYXQodmFycyhgc2xlcF9vcmRuMTBhIzFfMV8xYCwgYHNsZXBfb3JkbjEwYSMxXzJfMWApLAogICAgICAgICAgICBmdW5zKGdzdWIoIl4wXFw6IiwgIjEyXFw6IiwgLikpKSAlPiUKICBtdXRhdGUoc2xlcF9kYXRlc2xlZXAgPSBpZmVsc2UoYHNsZXBfb3JkbjEwYSMyXzFgID09ICJQTSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcy5jaGFyYWN0ZXIodG9kYXkoKSksIGFzLmNoYXJhY3Rlcih0b2RheSgpICsgMSkpLAogICAgICAgICBzbGVwX2RhdGV3YWtlID0gYXMuY2hhcmFjdGVyKHRvZGF5KCkgKyAxKSwKICAgICAgICAgc2xlcF9kYXRldGltZXNsZWVwID0gcGFzdGUoc2xlcF9kYXRlc2xlZXAsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgc2xlcF9vcmRuMTBhIzFfMV8xYCwgYHNsZXBfb3JkbjEwYSMyXzFgKSwKICAgICAgICAgc2xlcF9kYXRldGltZXdha2UgPSBwYXN0ZShzbGVwX2RhdGV3YWtlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBzbGVwX29yZG4xMGEjMV8yXzFgLCBgc2xlcF9vcmRuMTBhIzJfMmApKSAlPiUKICBtdXRhdGVfYXQodmFycyhzbGVwX2RhdGV0aW1lc2xlZXAsIHNsZXBfZGF0ZXRpbWV3YWtlKSwKICAgICAgICAgICAgZnVucyhpZmVsc2UoZ3JlcGwoIk1EIiwgLiksIE5BLCAuKSkpICU+JQogIG11dGF0ZV9hdCh2YXJzKHNsZXBfZGF0ZXRpbWVzbGVlcCwgc2xlcF9kYXRldGltZXdha2UpLAogICAgICAgICAgICBmdW5zKHBhcnNlX2RhdGV0aW1lKC4sIGZvcm1hdCA9ICIlWS0lbS0lZCAlSTolTSAlcCIpKSkgJT4lCiAgbXV0YXRlKHNsZXBfaW50ZXJ2YWwgPSBpbnRlcnZhbChzbGVwX2RhdGV0aW1lc2xlZXAsIHNsZXBfZGF0ZXRpbWV3YWtlKSwKICAgICAgICAgc2xlcF9kdXJhdGlvbiA9IGFzLmR1cmF0aW9uKHNsZXBfaW50ZXJ2YWwpLAogICAgICAgICBzbGVwX2R1cmF0aW9uX251bSA9IGFzLm51bWVyaWMoc2xlcF9kdXJhdGlvbiwgImhvdXJzIikpCmBgYAoKYGBge3J9CmQgPC0gZDEKYGBgCgoKIyBEZW1vZ3JhcGhpY3MKCmBgYHtyLCBpbmNsdWRlID0gVH0KZCAlPiUKICBkaXN0aW5jdChzbGVwX2N0cnksIHNsZXBfc3ViaikgJT4lCiAgY291bnQoc2xlcF9jdHJ5KQpgYGAKCmBgYHtyLCBpbmNsdWRlID0gVH0KZCAlPiUKICBkaXN0aW5jdChzbGVwX2N0cnksIHNsZXBfc3Viaiwgc2xlcF9kZW1vX3NleCkgJT4lCiAgZ3JvdXBfYnkoc2xlcF9jdHJ5KSAlPiUKICBjb3VudChzbGVwX2RlbW9fc2V4KSAlPiUKICBtdXRhdGUocHJvcCA9IHJvdW5kKG4vc3VtKG4pLCAyKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIHNlbGVjdCgtbikgJT4lCiAgc3ByZWFkKHNsZXBfZGVtb19zZXgsIHByb3ApCmBgYAoKQSBjb3VwbGUgb2YgdGhpbmdzIHRvIG5vdGUgaGVyZTogQSBzdWJzdGFudGlhbCBtYWpvcml0eSBvZiBwYXJ0aWNpcGFudHMgaW4gR2hhbmEgd2VyZSBmZW1hbGUsIGFuZCB0aGlzIGFsc28gYXBwZWFycyB0byBiZSB0cnVlIGluIFRoYWlsYW5kIGFuZCBWYW51YXR1ICh3aGVyZSBhbiB1bnVzdWFsIG51bWJlciBvZiBwYXJ0aWNpcGFudHMgYXJlIG1pc3NpbmcgZ2VuZGVyL3NleCBpbmZvKS4KCmBgYHtyLCBpbmNsdWRlID0gVH0KZDAgJT4lCiAgZGlzdGluY3Qoc2xlcF9jdHJ5LCBzbGVwX3N1YmosIHNsZXBfZGVtb19hZ2UpICU+JQogIGdyb3VwX2J5KHNsZXBfY3RyeSkgJT4lCiAgc3VtbWFyaXNlKG1lZGlhbiA9IG1lZGlhbihzbGVwX2RlbW9fYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICBtZWFuID0gbWVhbihzbGVwX2RlbW9fYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICBzZCA9IHNkKHNsZXBfZGVtb19hZ2UsIG5hLnJtID0gVCksCiAgICAgICAgICAgIG1pbiA9IG1pbihzbGVwX2RlbW9fYWdlLCBuYS5ybSA9IFQpLAogICAgICAgICAgICBtYXggPSBtYXgoc2xlcF9kZW1vX2FnZSwgbmEucm0gPSBUKSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMobWVkaWFuLCBtZWFuLCBzZCwgbWluLCBtYXgpLCBmdW5zKHJvdW5kKC4sIDIpKSkKYGBgCgoKPFAgc3R5bGU9InBhZ2UtYnJlYWstYmVmb3JlOiBhbHdheXMiPgojIEluZGl2aWR1YWwgcXVlc3Rpb25zCgojIyAxLiBXaGVyZSBkbyB5b3UgdXN1YWxseSBzbGVlcCBhdCBuaWdodD8gKGBzbGVwX29yZG4wMWApCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgaW5jbHVkZSA9IFR9CmQgJT4lCiAgbXV0YXRlKHNsZXBfb3JkbjAxID0gY2FzZV93aGVuKGdyZXBsKCIsIiwgc2xlcF9vcmRuMDEpIH4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGxlIGFuc3dlcnMgc2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gYXMuY2hhcmFjdGVyKHNsZXBfb3JkbjAxKSksCiAgICAgICAgIHNsZXBfb3JkbjAxID0gZmFjdG9yKHNsZXBfb3JkbjAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJvd24gYmVkcm9vbSIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZWRyb29tIHNoYXJlZCB3aXRoIG90aGVycyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tb24gcm9vbSAobGl2aW5nIHBsdXMgc2xlZXBpbmcpIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBvcmNoL291dHNpZGUiLCAibm90IGluIGhvbWUiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFyaWFibGUiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwbGUgYW5zd2VycyBzZWxlY3RlZCIpKSkgJT4lCiAgY291bnQoc2xlcF9jdHJ5LCBzbGVwX29yZG4wMSkgJT4lCiAgY29tcGxldGUoc2xlcF9vcmRuMDEsIG5lc3Rpbmcoc2xlcF9jdHJ5KSwgZmlsbCA9IGxpc3QobiA9IDApKSAlPiUKICBncm91cF9ieShzbGVwX2N0cnkpICU+JQogIG11dGF0ZShwcm9wID0gbi9zdW0obiwgbmEucm0gPSBUKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2xlcF9vcmRuMDEsIHkgPSBwcm9wLCBmaWxsID0gc2xlcF9jdHJ5KSkgKwogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoc2xlcF9jdHJ5KSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICIxLiBXaGVyZSBkbyB5b3UgdXN1YWxseSBzbGVlcCBhdCBuaWdodD8gKGBzbGVwX29yZG4wMWApIiwgCiAgICAgICB4ID0gIlJlc3BvbnNlIiwgeSA9ICJQcm9wb3J0aW9uIG9mIHBhcnRpY2lwYW50cyIpCmBgYAoKCiMjIDIuIFdoYXQgZG8geW91IHVzdWFsbHkgc2xlZXAgb24gYXQgbmlnaHQ/IChgc2xlcF9vcmRuMDJgKQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGluY2x1ZGUgPSBUfQpkICU+JQogIG11dGF0ZShzbGVwX29yZG4wMiA9IGNhc2Vfd2hlbihncmVwbCgiLCIsIHNsZXBfb3JkbjAyKSB+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IGFzLmNoYXJhY3RlcihzbGVwX29yZG4wMikpLAogICAgICAgICBzbGVwX29yZG4wMiA9IGZhY3RvcihzbGVwX29yZG4wMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygiYmVkIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvZmEsIGRpdmFuIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hdCwgZ3JvdW5kIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhhbW1vY2siLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwbGUgYW5zd2VycyBzZWxlY3RlZCIpKSkgJT4lCiAgY291bnQoc2xlcF9jdHJ5LCBzbGVwX29yZG4wMikgJT4lCiAgY29tcGxldGUoc2xlcF9vcmRuMDIsIG5lc3Rpbmcoc2xlcF9jdHJ5KSwgZmlsbCA9IGxpc3QobiA9IDApKSAlPiUKICBncm91cF9ieShzbGVwX2N0cnkpICU+JQogIG11dGF0ZShwcm9wID0gbi9zdW0obiwgbmEucm0gPSBUKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2xlcF9vcmRuMDIsIHkgPSBwcm9wLCBmaWxsID0gc2xlcF9jdHJ5KSkgKwogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoc2xlcF9jdHJ5KSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICIyLiBXaGF0IGRvIHlvdSB1c3VhbGx5IHNsZWVwIG9uIGF0IG5pZ2h0PyAoYHNsZXBfb3JkbjAyYCkiLCAKICAgICAgIHggPSAiUmVzcG9uc2UiLCB5ID0gIlByb3BvcnRpb24gb2YgcGFydGljaXBhbnRzIikKYGBgCgoKIyMgMy4gRG9lcyBhbnlvbmUgZWxzZSBzbGVlcCBpbiB0aGUgc2FtZSBiZWQgKG9yIG1hdCwgaGFtbW9jaywgZXRjLikgd2l0aCB5b3U/IChgc2xlcF9vcmRuMDNgKQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGluY2x1ZGUgPSBUfQpkICU+JQogIG11dGF0ZShzbGVwX29yZG4wMyA9IGNhc2Vfd2hlbihncmVwbCgiLCIsIHNsZXBfb3JkbjAzKSB+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGxlIGFuc3dlcnMgc2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gYXMuY2hhcmFjdGVyKHNsZXBfb3JkbjAzKSksCiAgICAgICAgIHNsZXBfb3JkbjAzID0gZmFjdG9yKHNsZXBfb3JkbjAzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJ5ZXMiLCAibm8iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIikpKSAlPiUKICBjb3VudChzbGVwX2N0cnksIHNsZXBfb3JkbjAzKSAlPiUKICBjb21wbGV0ZShzbGVwX29yZG4wMywgbmVzdGluZyhzbGVwX2N0cnkpLCBmaWxsID0gbGlzdChuID0gMCkpICU+JQogIGdyb3VwX2J5KHNsZXBfY3RyeSkgJT4lCiAgbXV0YXRlKHByb3AgPSBuL3N1bShuLCBuYS5ybSA9IFQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzbGVwX29yZG4wMywgeSA9IHByb3AsIGZpbGwgPSBzbGVwX2N0cnkpKSArCiAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyhzbGVwX2N0cnkpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIjMuIERvZXMgYW55b25lIGVsc2Ugc2xlZXAgaW4gdGhlIHNhbWUgYmVkIChvciBtYXQsIGhhbW1vY2ssIGV0Yy4pIHdpdGggeW91P1xuKGBzbGVwX29yZG4wM2ApIiwgCiAgICAgICB4ID0gIlJlc3BvbnNlIiwgeSA9ICJQcm9wb3J0aW9uIG9mIHBhcnRpY2lwYW50cyIpCmBgYAoKCiMjIDQuIElmIHllcywgd2hvIHNsZWVwcyB3aXRoIHlvdSBpbiB0aGUgYmVkPyBQbGVhc2UgY2lyY2xlIHRoZSBwZXJzb24ocykgZnJvbSB0aGUgbGlzdCAoYHNsZXBfb3JkbjA0YCkKCmBgYHtyLCBmaWcud2lkdGggPSA1LCBpbmNsdWRlID0gVH0KZCAlPiUKICBtdXRhdGUoc2xlcF9vcmRuMDQgPSBjYXNlX3doZW4oZ3JlcGwoIiwiLCBzbGVwX29yZG4wNCkgfgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IGFzLmNoYXJhY3RlcihzbGVwX29yZG4wNCkpLAogICAgICAgICBzbGVwX29yZG4wNCA9IGZhY3RvcihzbGVwX29yZG4wNCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygibm9ib2R5IiwgInNwb3VzZSIsICJzaXN0ZXIiLCAiYnJvdGhlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdWdodGVyIiwgInNvbiIsICJtb3RoZXIiLCAiZmF0aGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhbmRwYXJlbnQiLCAiZ3JhbmRjaGlsZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdGhlciByZWxhdGl2ZSIsICJub24tcmVsYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIikpKSAlPiUKICBjb3VudChzbGVwX2N0cnksIHNsZXBfb3JkbjA0KSAlPiUKICBjb21wbGV0ZShzbGVwX29yZG4wNCwgbmVzdGluZyhzbGVwX2N0cnkpLCBmaWxsID0gbGlzdChuID0gMCkpICU+JQogIGdyb3VwX2J5KHNsZXBfY3RyeSkgJT4lCiAgbXV0YXRlKHByb3AgPSBuL3N1bShuLCBuYS5ybSA9IFQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzbGVwX29yZG4wNCwgeSA9IHByb3AsIGZpbGwgPSBzbGVwX2N0cnkpKSArCiAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyhzbGVwX2N0cnkpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIjQuIElmIHllcywgd2hvIHNsZWVwcyB3aXRoIHlvdSBpbiB0aGUgYmVkPyBQbGVhc2UgY2lyY2xlIHRoZSBwZXJzb24ocykgZnJvbSB0aGUgbGlzdCAoYHNsZXBfb3JkbjA0YCkiLCAKICAgICAgIHggPSAiUmVzcG9uc2UiLCB5ID0gIlByb3BvcnRpb24gb2YgcGFydGljaXBhbnRzIikKYGBgCgoKIyMgNS4gQmVzaWRlcyBhbnlvbmUgd2hvIHNoYXJlcyB0aGUgYmVkIHdpdGggeW91LCBkb2VzIHNvbWVvbmUgZWxzZSBzbGVlcCBpbiB0aGUgc2FtZSByb29tIHdpdGggeW91PyAoYHNsZXBfb3JkbjA1YCkKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBpbmNsdWRlID0gVH0KZCAlPiUKICBtdXRhdGUoc2xlcF9vcmRuMDUgPSBjYXNlX3doZW4oZ3JlcGwoIiwiLCBzbGVwX29yZG4wNSkgfiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwbGUgYW5zd2VycyBzZWxlY3RlZCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRSVUUgfiBhcy5jaGFyYWN0ZXIoc2xlcF9vcmRuMDUpKSwKICAgICAgICAgc2xlcF9vcmRuMDUgPSBmYWN0b3Ioc2xlcF9vcmRuMDUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVscyA9IGMoIm5vIiwgInllcyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIikpKSAlPiUKICBjb3VudChzbGVwX2N0cnksIHNsZXBfb3JkbjA1KSAlPiUKICBjb21wbGV0ZShzbGVwX29yZG4wNSwgbmVzdGluZyhzbGVwX2N0cnkpLCBmaWxsID0gbGlzdChuID0gMCkpICU+JQogIGdyb3VwX2J5KHNsZXBfY3RyeSkgJT4lCiAgbXV0YXRlKHByb3AgPSBuL3N1bShuLCBuYS5ybSA9IFQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzbGVwX29yZG4wNSwgeSA9IHByb3AsIGZpbGwgPSBzbGVwX2N0cnkpKSArCiAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyhzbGVwX2N0cnkpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIjUuIEJlc2lkZXMgYW55b25lIHdobyBzaGFyZXMgdGhlIGJlZCB3aXRoIHlvdSwgZG9lcyBzb21lb25lIGVsc2Ugc2xlZXAgaW4gdGhlIHNhbWVcbnJvb20gd2l0aCB5b3U/IChgc2xlcF9vcmRuMDVgKSIsIAogICAgICAgeCA9ICJSZXNwb25zZSIsIHkgPSAiUHJvcG9ydGlvbiBvZiBwYXJ0aWNpcGFudHMiKQpgYGAKCgojIyA2LiBJZiB5ZXMsIHdobyBlbHNlIHNsZWVwcyBpbiB0aGUgc2FtZSByb29tIHdpdGggeW91PyBQbGVhc2UgY2lyY2xlIHRoZSBwZXJzb24ocykgZnJvbSB0aGUgbGlzdCAoYHNsZXBfb3JkbjA2YCkKCmBgYHtyLCBmaWcud2lkdGggPSA1LCBpbmNsdWRlID0gVH0KZCAlPiUKICBtdXRhdGUoc2xlcF9vcmRuMDYgPSBjYXNlX3doZW4oZ3JlcGwoIiwiLCBzbGVwX29yZG4wNikgfgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IGFzLmNoYXJhY3RlcihzbGVwX29yZG4wNikpLAogICAgICAgICBzbGVwX29yZG4wNiA9IGZhY3RvcihzbGVwX29yZG4wNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygibm9ib2R5IiwgInNwb3VzZSIsICJzaXN0ZXIiLCAiYnJvdGhlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdWdodGVyIiwgInNvbiIsICJtb3RoZXIiLCAiZmF0aGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ3JhbmRwYXJlbnQiLCAiZ3JhbmRjaGlsZCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdGhlciByZWxhdGl2ZSIsICJub24tcmVsYXRpdmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIikpKSAlPiUKICBjb3VudChzbGVwX2N0cnksIHNsZXBfb3JkbjA2KSAlPiUKICBjb21wbGV0ZShzbGVwX29yZG4wNiwgbmVzdGluZyhzbGVwX2N0cnkpLCBmaWxsID0gbGlzdChuID0gMCkpICU+JQogIGdyb3VwX2J5KHNsZXBfY3RyeSkgJT4lCiAgbXV0YXRlKHByb3AgPSBuL3N1bShuLCBuYS5ybSA9IFQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzbGVwX29yZG4wNiwgeSA9IHByb3AsIGZpbGwgPSBzbGVwX2N0cnkpKSArCiAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyhzbGVwX2N0cnkpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIjYuIElmIHllcywgd2hvIGVsc2Ugc2xlZXBzIGluIHRoZSBzYW1lIHJvb20gd2l0aCB5b3U/IFBsZWFzZSBjaXJjbGUgdGhlIHBlcnNvbihzKSBmcm9tIHRoZSBsaXN0IChgc2xlcF9vcmRuMDZgKSIsIAogICAgICAgeCA9ICJSZXNwb25zZSIsIHkgPSAiUHJvcG9ydGlvbiBvZiBwYXJ0aWNpcGFudHMiKQpgYGAKCgojIyA3LiBXaGF0IGRvZXMgeW91ciBmYW1pbHkgdXNlIHRvIHNlZSBhdCBuaWdodD8gKGBzbGVwX29yZG4wN2ApCgpgYGB7ciwgZmlnLndpZHRoID0gNSwgaW5jbHVkZSA9IFR9CmQgJT4lCiAgbXV0YXRlKHNsZXBfb3JkbjA3ID0gY2FzZV93aGVuKGdyZXBsKCIsIiwgc2xlcF9vcmRuMDcpIH4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGxlIGFuc3dlcnMgc2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gYXMuY2hhcmFjdGVyKHNsZXBfb3JkbjA3KSksCiAgICAgICAgIHNsZXBfb3JkbjA3ID0gZmFjdG9yKHNsZXBfb3JkbjA3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJub3RoaW5nLCBqdXN0IHRoZSBtb29uIGFuZCBzdGFycyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZ2h0IGZyb20gdGhlIGNvb2tpbmcgZmlyZSBvciBoZWFydGgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5kbGVzIG9yIHN0cmF3IHRvcmNoZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvaWwgb3Iga2Vyb3NlbmUgbGFtcCIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYXR0ZXJ5LWRyaXZlbiBsYW1wIG9yIGZsYXNobGlnaHQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWxlY3RyaWMgbGlnaHQiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwbGUgYW5zd2VycyBzZWxlY3RlZCIpKSkgJT4lCiAgY291bnQoc2xlcF9jdHJ5LCBzbGVwX29yZG4wNykgJT4lCiAgY29tcGxldGUoc2xlcF9vcmRuMDcsIG5lc3Rpbmcoc2xlcF9jdHJ5KSwgZmlsbCA9IGxpc3QobiA9IDApKSAlPiUKICBncm91cF9ieShzbGVwX2N0cnkpICU+JQogIG11dGF0ZShwcm9wID0gbi9zdW0obiwgbmEucm0gPSBUKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2xlcF9vcmRuMDcsIHkgPSBwcm9wLCBmaWxsID0gc2xlcF9jdHJ5KSkgKwogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoc2xlcF9jdHJ5KSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICI3LiBXaGF0IGRvZXMgeW91ciBmYW1pbHkgdXNlIHRvIHNlZSBhdCBuaWdodD8gKGBzbGVwX29yZG4wN2ApIiwgCiAgICAgICB4ID0gIlJlc3BvbnNlIiwgeSA9ICJQcm9wb3J0aW9uIG9mIHBhcnRpY2lwYW50cyIpCmBgYAoKCiMjIDguIERvIHlvdSB1c3VhbGx5IHRha2UgbmFwcz8gKGBzbGVwX29yZG4wOGApCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgaW5jbHVkZSA9IFR9CmQgJT4lCiAgbXV0YXRlKHNsZXBfb3JkbjA4ID0gY2FzZV93aGVuKGdyZXBsKCIsIiwgc2xlcF9vcmRuMDgpIH4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGxlIGFuc3dlcnMgc2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gYXMuY2hhcmFjdGVyKHNsZXBfb3JkbjA4KSksCiAgICAgICAgIHNsZXBfb3JkbjA4ID0gZmFjdG9yKHNsZXBfb3JkbjA4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJubyIsICJ5ZXMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwbGUgYW5zd2VycyBzZWxlY3RlZCIpKSkgJT4lCiAgY291bnQoc2xlcF9jdHJ5LCBzbGVwX29yZG4wOCkgJT4lCiAgY29tcGxldGUoc2xlcF9vcmRuMDgsIG5lc3Rpbmcoc2xlcF9jdHJ5KSwgZmlsbCA9IGxpc3QobiA9IDApKSAlPiUKICBncm91cF9ieShzbGVwX2N0cnkpICU+JQogIG11dGF0ZShwcm9wID0gbi9zdW0obiwgbmEucm0gPSBUKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2xlcF9vcmRuMDgsIHkgPSBwcm9wLCBmaWxsID0gc2xlcF9jdHJ5KSkgKwogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoc2xlcF9jdHJ5KSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICI4LiBEbyB5b3UgdXN1YWxseSB0YWtlIG5hcHM/IChgc2xlcF9vcmRuMDhgKSIsIAogICAgICAgeCA9ICJSZXNwb25zZSIsIHkgPSAiUHJvcG9ydGlvbiBvZiBwYXJ0aWNpcGFudHMiKQpgYGAKCgojIyA5LiBJZiBzbywgaG93IG9mdGVuIGRvIHlvdSByZXN0IG9yIG5hcD8gKGBzbGVwX29yZG4wOWApCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgaW5jbHVkZSA9IFR9CmQgJT4lCiAgbXV0YXRlKHNsZXBfb3JkbjA5ID0gY2FzZV93aGVuKGdyZXBsKCIsIiwgc2xlcF9vcmRuMDkpIH4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11bHRpcGxlIGFuc3dlcnMgc2VsZWN0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUUlVFIH4gYXMuY2hhcmFjdGVyKHNsZXBfb3JkbjA5KSksCiAgICAgICAgIHNsZXBfb3JkbjA5ID0gZmFjdG9yKHNsZXBfb3JkbjA5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbHMgPSBjKCJOQSAobmV2ZXIpIiwgInJhcmVseSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNvbWV0aW1lcyAoMS0yIHRpbWVzIGEgd2VlaykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c3VhbGx5IGJ1dCBub3QgZXZlcnlkYXkgKDMtNiB0aW1lcyBhIHdlZWspIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXZlcnkgZGF5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVsdGlwbGUgYW5zd2VycyBzZWxlY3RlZCIpKSkgJT4lCiAgY291bnQoc2xlcF9jdHJ5LCBzbGVwX29yZG4wOSkgJT4lCiAgY29tcGxldGUoc2xlcF9vcmRuMDksIG5lc3Rpbmcoc2xlcF9jdHJ5KSwgZmlsbCA9IGxpc3QobiA9IDApKSAlPiUKICBncm91cF9ieShzbGVwX2N0cnkpICU+JQogIG11dGF0ZShwcm9wID0gbi9zdW0obiwgbmEucm0gPSBUKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2xlcF9vcmRuMDksIHkgPSBwcm9wLCBmaWxsID0gc2xlcF9jdHJ5KSkgKwogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoc2xlcF9jdHJ5KSkgKwogIGdlb21fYmFyKHN0YXQgPSAiaWRlbnRpdHkiKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICI5LiBJZiBzbywgaG93IG9mdGVuIGRvIHlvdSByZXN0IG9yIG5hcD8gKGBzbGVwX29yZG4wOWApIiwgCiAgICAgICB4ID0gIlJlc3BvbnNlIiwgeSA9ICJQcm9wb3J0aW9uIG9mIHBhcnRpY2lwYW50cyIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGluY2x1ZGUgPSBUfQpkICU+JQogIGRpc3RpbmN0KHNsZXBfc3Viaiwgc2xlcF9jdHJ5LCBzbGVwX29yZG4wOSkgJT4lCiAgZmlsdGVyKHNsZXBfb3JkbjA5ICE9ICIuIikgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2xlcF9jdHJ5LCB5ID0gc2xlcF9vcmRuMDksIGNvbG9yID0gc2xlcF9jdHJ5KSkgKwogIGdlb21faml0dGVyKGFscGhhID0gMC4yNSwgd2lkdGggPSAwLjI1LCBoZWlnaHQgPSAwLjI1KSArCiAgZ2VvbV9wb2ludHJhbmdlKGRhdGEgPSAuICU+JSAKICAgICAgICAgICAgICAgICAgICBncm91cF9ieShzbGVwX2N0cnkpICU+JQogICAgICAgICAgICAgICAgICAgIG11dGF0ZShzbGVwX29yZG4wOSA9IGFzLm51bWVyaWMoc2xlcF9vcmRuMDkpKSAlPiUKICAgICAgICAgICAgICAgICAgICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJzbGVwX29yZG4wOSIpICU+JQogICAgICAgICAgICAgICAgICAgIHVuZ3JvdXAoKSwKICAgICAgICAgICAgICAgICAgYWVzKHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksIAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgIyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIjkuIElmIHNvLCBob3cgb2Z0ZW4gZG8geW91IHJlc3Qgb3IgbmFwPyAoYHNsZXBfb3JkbjA5YCkiLAogICAgICAgc3VidGl0bGUgPSAiRXJyb3IgYmFycyBhcmUgOTUlIGJvb3RzdHJhcHBlZCBjb25maWRlbmNlIGludGVydmFscyIsCiAgICAgICB4ID0gIlNpdGUiLCB5ID0gIlJlc3BvbnNlIikKYGBgCgojIyAxMC4gV2hlbiBkbyB5b3UgdHlwaWNhbGx5IGZhbGwgYXNsZWVwIGV2ZXJ5IG5pZ2h0IGFuZCB3YWtlIHVwIGV2ZXJ5IG5pZ2h0PyAoYHNsZXBfb3JkbjEwYCkKCmBgYHtyLCBmaWcud2lkdGggPSA1LCBpbmNsdWRlID0gVH0KZCAlPiUKICBkaXN0aW5jdChzbGVwX2N0cnksIHNsZXBfc3Viaiwgc2xlcF9kYXRldGltZXNsZWVwLCBzbGVwX2RhdGV0aW1ld2FrZSkgJT4lCiAgbXV0YXRlX2F0KHZhcnMoc2xlcF9kYXRldGltZXNsZWVwLCBzbGVwX2RhdGV0aW1ld2FrZSksCiAgICAgICAgICAgIGZ1bnMoYXMuY2hhcmFjdGVyKSkgJT4lCiAgZ2F0aGVyKHNsZWVwd2FrZSwgdGltZSwgLWMoc2xlcF9jdHJ5LCBzbGVwX3N1YmopKSAlPiUKICBtdXRhdGUodGltZSA9IHBhcnNlX2RhdGV0aW1lKHRpbWUpLAogICAgICAgICBzbGVlcHdha2UgPSBmYWN0b3Ioc2xlZXB3YWtlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygic2xlcF9kYXRldGltZXNsZWVwIiwgInNsZXBfZGF0ZXRpbWV3YWtlIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKCJmYWxsIGFzbGVlcCIsICJ3YWtlIHVwIikpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSB0aW1lLCBmaWxsID0gc2xlcF9jdHJ5LCBjb2xvciA9IHNsZWVwd2FrZSkpICsKICBmYWNldF93cmFwKH4gc2xlcF9jdHJ5LCBuY29sID0gMykgKwogIGdlb21fZGVuc2l0eShwb3NpdGlvbiA9ICJpZGVudGl0eSIsIGFscGhhID0gMC41LCBzaXplID0gMC44KSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gcGFzdGUodG9kYXkoKSArIDEsICIxMjowMCBBTSIpICU+JSAKICAgICAgICAgICAgICAgYXNfZGF0ZXRpbWUoZm9ybWF0ID0gIiVZLSVtLSVkICVJOiVNICVwIiksIAogICAgICAgICAgICAgY29sb3IgPSAiZGFya2JsdWUiLCBsdHkgPSAyKSArCiAgZ2VvbV92bGluZSh4aW50ZXJjZXB0ID0gcGFzdGUodG9kYXkoKSArIDEsICIwODowMCBBTSIpICU+JSAKICAgICAgICAgICAgICAgYXNfZGF0ZXRpbWUoZm9ybWF0ID0gIiVZLSVtLSVkICVJOiVNICVwIiksIAogICAgICAgICAgICAgY29sb3IgPSAiZGFya3JlZCIsIGx0eSA9IDIpICsKICAjIGFubm90YXRlKCJ0ZXh0IiwKICAjICAgICAgICAgIHggPSBwYXN0ZSh0b2RheSgpICsgMSwgIjE6MDAgQU0iKSAlPiUKICAjICAgICAgICAgICAgYXNfZGF0ZXRpbWUoZm9ybWF0ID0gIiVZLSVtLSVkICVJOiVNICVwIiksCiAgIyAgICAgICAgICB5ID0gMC4wMDAxNSwgbGFiZWwgPSAi4oaQIG1pZG5pZ2h0IiwgaGp1c3QgPSAwKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgc2NhbGVfY29sb3JfbWFudWFsKHZhbHVlcyA9IGMoImRhcmtibHVlIiwgImRhcmtyZWQiKSwgZ3VpZGUgPSAibm9uZSIpICsKICBzY2FsZV94X2RhdGV0aW1lKGRhdGVfYnJlYWtzID0gIjYgaG91cnMiLCBkYXRlX21pbm9yX2JyZWFrcyA9ICAiMiBob3VycyIsIAogICAgICAgICAgICAgICAgICAgZGF0ZV9sYWJlbHMgPSAiJUk6JW0gJXAiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKSArCiAgbGFicyh0aXRsZSA9ICIxMC4gV2hlbiBkbyB5b3UgdHlwaWNhbGx5IGZhbGwgYXNsZWVwIGV2ZXJ5IG5pZ2h0IGFuZCB3YWtlIHVwIGV2ZXJ5IG5pZ2h0PyAoYHNsZXBfb3JkbjEwYCkiLCAKICAgICAgIHN1YnRpdGxlID0gIk5PVEU6IExvdHMgb2YgbWlzc2luZyBkYXRhIGhlcmUhXG5Eb3R0ZWQgbGluZXMgaW5kaWNhdGUgMTI6MDAgQU0gKG1pZG5pZ2h0KSBhbmQgODowMEFNOyBibHVlIG91dGxpbmUgaW5kaWNhdGVzIHRpbWUgdG8gZmFsbCBhc2xlZXAsIGFuZCByZWQgaW5kaWNhdGVzIHRpbWUgdG8gd2FrZSB1cCIsCiAgICAgICB4ID0gIlJlc3BvbnNlIiwgeSA9ICJEZW5zaXR5ICh+cHJvcG9ydGlvbiBvZiBwYXJ0aWNpcGFudHMpIiwgCiAgICAgICBjb2xvciA9ICJTbGVlcCB2cy4gd2FrZSIpCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDUsIGluY2x1ZGUgPSBUfQpkICU+JQogIGdncGxvdChhZXMoeCA9IHNsZXBfZHVyYXRpb25fbnVtLCBmaWxsID0gc2xlcF9jdHJ5KSkgKwogIGZhY2V0X3dyYXAofiBzbGVwX2N0cnksIG5jb2wgPSAzKSArCiAgZ2VvbV9kZW5zaXR5KHBvc2l0aW9uID0gImlkZW50aXR5IiwgYWxwaGEgPSAwLjUsIHNpemUgPSAwLjgpICsKICBnZW9tX3ZsaW5lKHhpbnRlcmNlcHQgPSA4LCBsdHkgPSAyKSArCiAgc2NhbGVfZmlsbF9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpLAogICAgICAgIGxlZ2VuZC5wb3NpdGlvbiA9ICJ0b3AiKSArCiAgbGFicyh0aXRsZSA9ICJMZW5ndGggb2Ygc2xlZXAgKGRlcml2ZWQgZnJvbSBgc2xlcF9vcmRuMTBgKSIsIAogICAgICAgc3VidGl0bGUgPSAiTk9URTogTG90cyBvZiBtaXNzaW5nIGRhdGEgaGVyZSFcbkRvdHRlZCBsaW5lIGluZGljYXRlcyA4IGhvdXJzIiwKICAgICAgIHggPSAiTGVuZ3RoIG9mIHNsZWVwIChob3VycykiLCB5ID0gIkRlbnNpdHkgKH5wcm9wb3J0aW9uIG9mIHBhcnRpY2lwYW50cykiKQpgYGAKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBmaWcuYXNwID0gMSwgaW5jbHVkZSA9IFR9CmQgJT4lCiAgZGlzdGluY3Qoc2xlcF9zdWJqLCBzbGVwX2N0cnksIHNsZXBfZHVyYXRpb25fbnVtKSAlPiUKICBmaWx0ZXIoIWlzLm5hKHNsZXBfZHVyYXRpb25fbnVtKSkgJT4lCiAgZ2dwbG90KGFlcyh4ID0gc2xlcF9jdHJ5LCB5ID0gc2xlcF9kdXJhdGlvbl9udW0sIGNvbG9yID0gc2xlcF9jdHJ5KSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDgsIGx0eSA9IDIpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuMjUsIHdpZHRoID0gMC4yNSwgaGVpZ2h0ID0gMC4yNSkgKwogIGdlb21fcG9pbnRyYW5nZShkYXRhID0gLiAlPiUgCiAgICAgICAgICAgICAgICAgICAgZ3JvdXBfYnkoc2xlcF9jdHJ5KSAlPiUKICAgICAgICAgICAgICAgICAgICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJzbGVwX2R1cmF0aW9uX251bSIpICU+JQogICAgICAgICAgICAgICAgICAgIHVuZ3JvdXAoKSwKICAgICAgICAgICAgICAgICAgYWVzKHkgPSBtZWFuLCB5bWluID0gY2lfbG93ZXIsIHltYXggPSBjaV91cHBlciksIAogICAgICAgICAgICAgICAgICBjb2xvciA9ICJibGFjayIpICsKICBzY2FsZV9jb2xvcl9icmV3ZXIocGFsZXR0ZSA9ICJEYXJrMiIsIGd1aWRlID0gIm5vbmUiKSArCiAgIyB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIkxlbmd0aCBvZiBzbGVlcCAoZGVyaXZlZCBmcm9tIGBzbGVwX29yZG4xMGApIiwKICAgICAgIHN1YnRpdGxlID0gIk5PVEU6IExvdHMgb2YgbWlzc2luZyBkYXRhIGhlcmUhXG5FcnJvciBiYXJzIGFyZSA5NSUgYm9vdHN0cmFwcGVkIGNvbmZpZGVuY2UgaW50ZXJ2YWxzO1xuRG90dGVkIGxpbmUgaW5kaWNhdGVzIDggaG91cnMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJMZW5ndGggb2Ygc2xlZXAgKGhvdXJzKSIpCmBgYAoKIyMgMTEuIERvZXMgdGhhdCB2YXJ5IGEgbG90IGZyb20gbmlnaHQgdG8gbmlnaHQ/IChgc2xlcF9vcmRuMTFgKQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGluY2x1ZGUgPSBUfQpkICU+JQogIG11dGF0ZShzbGVwX29yZG4xMSA9IGNhc2Vfd2hlbihncmVwbCgiLCIsIHNsZXBfb3JkbjExKSB+IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+IGFzLmNoYXJhY3RlcihzbGVwX29yZG4xMSkpLAogICAgICAgICBzbGVwX29yZG4xMSA9IGZhY3RvcihzbGVwX29yZG4xMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygxOjUsICJtdWx0aXBsZSBhbnN3ZXJzIHNlbGVjdGVkIikpKSAlPiUKICBjb3VudChzbGVwX2N0cnksIHNsZXBfb3JkbjExKSAlPiUKICBjb21wbGV0ZShzbGVwX29yZG4xMSwgbmVzdGluZyhzbGVwX2N0cnkpLCBmaWxsID0gbGlzdChuID0gMCkpICU+JQogIGdyb3VwX2J5KHNsZXBfY3RyeSkgJT4lCiAgbXV0YXRlKHByb3AgPSBuL3N1bShuLCBuYS5ybSA9IFQpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzbGVwX29yZG4xMSwgeSA9IHByb3AsIGZpbGwgPSBzbGVwX2N0cnkpKSArCiAgZmFjZXRfZ3JpZChjb2xzID0gdmFycyhzbGVwX2N0cnkpKSArCiAgZ2VvbV9iYXIoc3RhdCA9ICJpZGVudGl0eSIpICsKICBzY2FsZV9maWxsX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDYwLCBoanVzdCA9IDEsIHZqdXN0ID0gMSkpICsKICBsYWJzKHRpdGxlID0gIjExLiBEb2VzIHRoYXQgdmFyeSBhIGxvdCBmcm9tIG5pZ2h0IHRvIG5pZ2h0PyBGb3IgZXhhbXBsZSwgZG8geW91IHJlZ3VsYXJseSBzbGVlcCBmcm9tIG9uZVxudGltZSAobWF5YmUgMTAgcG0pIHRvIGFub3RoZXIgdGltZSAobWF5YmUgNiBhbSkgZWFjaCBuaWdodCwgb3Igc29tZXRpbWVzIGRvIHlvdSBzbGVlcFxuYXQgMTAsIG90aGVyIG5pZ2h0cyBtaWRuaWdodCwgc29tZSBkYXlzIHlvdSBnZXQgdXAgYXQgMiBhbSwgc29tZXRpbWVzIGFuZCA1IGFtLFxuc29tZXRpbWVzIDcgYW0sIGF0IHZlcnkgZGlmZmVyZW50IHRpbWVzPyAoYHNsZXBfb3JkbjExYCkiLAogICAgICAgc3VidGl0bGUgPSAiMTogTm8gdmFyaWF0aW9uLCA1OiBWZXJ5IHZlcnkgdmFyaWVkIiwKICAgICAgIHggPSAiUmVzcG9uc2UiLCB5ID0gIlByb3BvcnRpb24gb2YgcGFydGljaXBhbnRzIikKYGBgCgpgYGB7ciwgZmlnLndpZHRoID0gNCwgaW5jbHVkZSA9IFR9CmQgJT4lCiAgZGlzdGluY3Qoc2xlcF9zdWJqLCBzbGVwX2N0cnksIHNsZXBfb3JkbjExKSAlPiUKICBmaWx0ZXIoc2xlcF9vcmRuMTEgIT0gIi4iKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzbGVwX2N0cnksIHkgPSBzbGVwX29yZG4xMSwgY29sb3IgPSBzbGVwX2N0cnkpKSArCiAgZ2VvbV9qaXR0ZXIoYWxwaGEgPSAwLjI1LCB3aWR0aCA9IDAuMjUsIGhlaWdodCA9IDAuMjUpICsKICBnZW9tX3BvaW50cmFuZ2UoZGF0YSA9IC4gJT4lIAogICAgICAgICAgICAgICAgICAgIGdyb3VwX2J5KHNsZXBfY3RyeSkgJT4lCiAgICAgICAgICAgICAgICAgICAgbXV0YXRlKHNsZXBfb3JkbjExID0gYXMubnVtZXJpYyhzbGVwX29yZG4xMSkpICU+JQogICAgICAgICAgICAgICAgICAgIG11bHRpX2Jvb3Rfc3RhbmRhcmQoY29sID0gInNsZXBfb3JkbjExIikgJT4lCiAgICAgICAgICAgICAgICAgICAgdW5ncm91cCgpLAogICAgICAgICAgICAgICAgICBhZXMoeSA9IG1lYW4sIHltaW4gPSBjaV9sb3dlciwgeW1heCA9IGNpX3VwcGVyKSwgCiAgICAgICAgICAgICAgICAgIGNvbG9yID0gImJsYWNrIikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gIkRhcmsyIiwgZ3VpZGUgPSAibm9uZSIpICsKICAjIHRoZW1lKGF4aXMudGV4dC54ID0gZWxlbWVudF90ZXh0KGFuZ2xlID0gNjAsIGhqdXN0ID0gMSwgdmp1c3QgPSAxKSkgKwogIGxhYnModGl0bGUgPSAiMTEuIERvZXMgdGhhdCB2YXJ5IGEgbG90IGZyb20gbmlnaHQgdG8gbmlnaHQ/IEZvciBleGFtcGxlLCBkbyB5b3UgcmVndWxhcmx5IHNsZWVwIGZyb20gb25lXG50aW1lIChtYXliZSAxMCBwbSkgdG8gYW5vdGhlciB0aW1lIChtYXliZSA2IGFtKSBlYWNoIG5pZ2h0LCBvciBzb21ldGltZXMgZG8geW91IHNsZWVwXG5hdCAxMCwgb3RoZXIgbmlnaHRzIG1pZG5pZ2h0LCBzb21lIGRheXMgeW91IGdldCB1cCBhdCAyIGFtLCBzb21ldGltZXMgYW5kIDUgYW0sXG5zb21ldGltZXMgNyBhbSwgYXQgdmVyeSBkaWZmZXJlbnQgdGltZXM/IChgc2xlcF9vcmRuMTFgKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJFcnJvciBiYXJzIGFyZSA5NSUgYm9vdHN0cmFwcGVkIGNvbmZpZGVuY2UgaW50ZXJ2YWxzIiwKICAgICAgIHggPSAiU2l0ZSIsIHkgPSAiUmVzcG9uc2UgKDE6IE5vIHZhcmlhdGlvbiwgNTogVmVyeSB2ZXJ5IHZhcmllZCkiKQpgYGAKCgojIyAxMmEuIFJBIGp1ZGdtZW50IGZvciBob3VycyBzbGVwdCAoYHNsZXBfb3JkbjEyYWAsIGRlcml2ZWQgZnJvbSBgc2xlcF9vcmRuMTJgKQoKYGBge3IsIGZpZy53aWR0aCA9IDQsIGluY2x1ZGUgPSBUfQpkICU+JQogIGRpc3RpbmN0KHNsZXBfc3Viaiwgc2xlcF9jdHJ5LCBzbGVwX29yZG4xMmEpICU+JQogIGZpbHRlcihzbGVwX29yZG4xMmEgIT0gIi4iKSAlPiUKICBmaWx0ZXIoc2xlcF9vcmRuMTJhIDw9IDIwKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSBzbGVwX2N0cnksIHkgPSBzbGVwX29yZG4xMmEsIGNvbG9yID0gc2xlcF9jdHJ5KSkgKwogIGdlb21faGxpbmUoeWludGVyY2VwdCA9IDgsIGx0eSA9IDIpICsKICBnZW9tX2ppdHRlcihhbHBoYSA9IDAuMjUsIHdpZHRoID0gMC4yNSwgaGVpZ2h0ID0gMC4yNSkgKwogIGdlb21fcG9pbnRyYW5nZShkYXRhID0gLiAlPiUgCiAgICAgICAgICAgICAgICAgICAgZ3JvdXBfYnkoc2xlcF9jdHJ5KSAlPiUKICAgICAgICAgICAgICAgICAgICBtdXRhdGUoc2xlcF9vcmRuMTJhID0gYXMubnVtZXJpYyhzbGVwX29yZG4xMmEpKSAlPiUKICAgICAgICAgICAgICAgICAgICBtdWx0aV9ib290X3N0YW5kYXJkKGNvbCA9ICJzbGVwX29yZG4xMmEiKSAlPiUKICAgICAgICAgICAgICAgICAgICB1bmdyb3VwKCksCiAgICAgICAgICAgICAgICAgIGFlcyh5ID0gbWVhbiwgeW1pbiA9IGNpX2xvd2VyLCB5bWF4ID0gY2lfdXBwZXIpLCAKICAgICAgICAgICAgICAgICAgY29sb3IgPSAiYmxhY2siKSArCiAgc2NhbGVfY29sb3JfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBndWlkZSA9ICJub25lIikgKwogICMgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICIxMmEuIFJBIGp1ZGdtZW50IGZvciBob3VycyBzbGVwdCAoYHNsZXBfb3JkbjEyYWAsIGRlcml2ZWQgZnJvbSBgc2xlcF9vcmRuMTJgKSIsCiAgICAgICBzdWJ0aXRsZSA9ICJOT1RFOiBFeGNsdWRlZCBvbmUgb3V0bGllciAoMSBwYXJ0aWNpcGFudCBpbiBWVCB3aG8gd2FzIGp1ZGdlZCB0byBzbGVlcCA+IDIwIGhvdXJzO1xuRXJyb3IgYmFycyBhcmUgOTUlIGJvb3RzdHJhcHBlZCBjb25maWRlbmNlIGludGVydmFsczsgZG90dGVkIGxpbmUgaW5kaWNhdGVzIDggaG91cnMiLAogICAgICAgeCA9ICJTaXRlIiwgeSA9ICJOdW1iZXIgb2YgaG91cnMgc2xlcHQgKFJBIGp1ZGdtZW50KSIpCmBgYAoKCiMjIDEzLiBXaGF0IGRvIHlvdSB0aGluayBpcyB0aGUgbW9zdCBpbXBvcnRhbnQgcm9sZSBvZiBzbGVlcCBmb3IgeW91PyAoYHNsZXBfb3JkbjEzYCkKCmBgYHtyLCBmaWcud2lkdGggPSA0LCBpbmNsdWRlID0gVH0KZCAlPiUKICBkaXN0aW5jdChzbGVwX2N0cnksIHNsZXBfc3Viaiwgc2xlcF9vcmRuMTFfd29ybGRvZnNwaXJpdHMsCiAgICAgICAgICAgc2xlcF9vcmRuMTNfZGVlcHNlbGYsIHNsZXBfb3JkbjEzX21pbmRvZmYsIHNsZXBfb3JkbjEzX3JlcGxlbmlzaCkgJT4lCiAgZ2F0aGVyKHJvbGUsIHJlc3BvbnNlLCAtYyhzbGVwX2N0cnksIHNsZXBfc3ViaikpICU+JQogIG11dGF0ZShyb2xlID0gcmVjb2RlX2ZhY3Rvcihyb2xlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xlcF9vcmRuMTNfcmVwbGVuaXNoIiA9ICJyZXBsZW5pc2ggZW5lcmd5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNsZXBfb3JkbjEzX21pbmRvZmYiID0gInNodXQgeW91ciBtaW5kIG9mZiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzbGVwX29yZG4xM19kZWVwc2VsZiIgPSAiZ2FpbiBhY2Nlc3MgdG8geW91ciBkZWVwZXN0IHNlbGYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2xlcF9vcmRuMTFfd29ybGRvZnNwaXJpdHMiID0gImNvbm5lY3Qgd2l0aCBhIHdvcmxkIG9mIHNwaXJpdHMiKSwKICAgICAgICAgcmVzcG9uc2UgPSBjYXNlX3doZW4oaXMubmEocmVzcG9uc2UpIH4gIm5vdCBzZWxlY3RlZCIsIFRSVUUgfiByZXNwb25zZSksCiAgICAgICAgIHJlc3BvbnNlID0gZmFjdG9yKHJlc3BvbnNlLCBsZXZlbHMgPSBjKCJub3Qgc2VsZWN0ZWQiLCAieWVzIikpKSAlPiUKICBnZ3Bsb3QoYWVzKHggPSByb2xlLCBmaWxsID0gc2xlcF9jdHJ5LCBhbHBoYSA9IHJlc3BvbnNlKSkgKwogIGZhY2V0X2dyaWQoY29scyA9IHZhcnMoc2xlcF9jdHJ5KSkgKwogIGdlb21fYmFyKHN0YXQgPSAiY291bnQiLCBwb3NpdGlvbiA9ICJmaWxsIikgKwogIHNjYWxlX2ZpbGxfYnJld2VyKHBhbGV0dGUgPSAiRGFyazIiLCBndWlkZSA9ICJub25lIikgKwogIHNjYWxlX2FscGhhX21hbnVhbCh2YWx1ZXMgPSBjKDAuMSwgMSksIGd1aWRlID0gIm5vbmUiKSArCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA2MCwgaGp1c3QgPSAxLCB2anVzdCA9IDEpKSArCiAgbGFicyh0aXRsZSA9ICIxMy4gV2hhdCBkbyB5b3UgdGhpbmsgaXMgdGhlIG1vc3QgaW1wb3J0YW50IHJvbGUgb2Ygc2xlZXAgZm9yIHlvdT8gKGBzbGVwX29yZG4xM2ApIiwgCiAgICAgICB4ID0gIlJvbGUiLCB5ID0gIlByb3BvcnRpb24gb2YgcGFydGljaXBhbnRzIHNlbGVjdGluZyAneWVzJyIpCmBgYAoKCgoKCg==